import axios from 'axios'
import qs from 'qs'
import store from '@/store/index.js'
import baseURL from './baseURL'
import { Message } from 'element-ui'

const instance = axios.create({
    baseURL, // 本地调试在接口前面加入api/  部署的时候记得在这个地方改成  process.env.VUE_APP_SM_API https://door.bainong365.com/api
    timeout: 50000
})

instance.defaults.transformRequest = data => qs.stringify(data)

instance.interceptors.request.use(
    config => {
        // 设置header
        setHeader(config)
        return config
    },
    error => {
        // Do something with request error
        console.log(error) // for debug
        Promise.reject(error)
    }
)

// axios response封装的数据在data里面
instance.interceptors.response.use(

    response => {
        // eslint-disable-next-line eqeqeq
        if (response.data.resultStatus == false) {

            Message.error({
                message: response.data.errorMessage
            })
        }
        // eslint-disable-next-line eqeqeq
        return response.data
    },
    error => {
        const { response } = error
        if (response) { // 如果response存在，服务器最起码返回结果
            switch (response.status) { // 这一块根据服务器来进行判断编写的
                case 400:
                    err.message = '请求出错'
                    break
                case 401:
                    Message.warning({
                        message: '授权失败，请重新登录'
                    })
                    store.commit('LOGIN_OUT')
                    setTimeout(() => {
                        window.location.reload()
                    }, 1000)

                    return
                case 403:
                    err.message = '拒绝访问'
                    break
                case 404:
                    err.message = '请求错误,未找到该资源'
                    break
                case 500:
                    Message.warning({
                        message: '服务器端出错'
                    })
                    store.commit('LOGIN_OUT')
                    setTimeout(() => {
                        window.localStorage.clear()
                        window.location.reload()
                    }, 1000)
                    break
            }

            console.log('查看错误返回', response)
        } else { // 服务器连结果都没有返回，这里只有服务器崩了或者断网问题
            if (!window.navigator.onLine) {
                // 断网处理： 可以跳转断网页面
                return
            }
            return Promise.reject(error)
        }
    }
)

function setHeader(config) {
    // setHeader
    config.headers.accessToken = localStorage.getItem('accessToken')
}

export default instance
